/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package utilidades;

import java.net.Socket;


/**
 *
 * @author Eduardo
 */
public abstract class Manejador implements Runnable{
        public final static int ENVIAR = 1;
        public final static int RECIBIR = 2;
        private int comportamiento;
        private Socket socket = null;
        private String pathname;
        private String idArchivo;

        protected Object lock = new Object();

        public Manejador(){
        }

        Manejador(Socket socket) {
            this.socket = socket;
        }

        public void setPathname(String pathname) {
            this.pathname = pathname;
        }

        public void setComportamiento(int comportamiento) {
            this.comportamiento = comportamiento;
        }

        public void setSocket(Socket socket) {
            this.socket = socket;
        }

    public void setIdArchivo(String idArchivo) {
        this.idArchivo = idArchivo;
    }

        public abstract void enviar(Socket socket, String pathname);

        public abstract void recibir(Socket socket, String pathname, String idArchivo);

        public void run(){
            switch(comportamiento){
                case ENVIAR: enviar(this.socket, this.pathname); break;
                case RECIBIR: recibir(this.socket, this.pathname, this.idArchivo); break;
                default :
                    throw new IllegalArgumentException("La variable comportamiento no es correcta");
            }
        }

    public void setLock(Object lock) {
        this.lock = lock;
    }

}  
